/**
 * 对juqey的一些扩展
 */
layui.use(['layer'], function(){
	  var layer = layui.layer


/**
 * 所有ajax 执行统一的策略 api : <a hreef
 * ="http://www.runoob.com/jquery/ajax-ajaxsetup.html"><a>
 * 
 * 1.防止按钮重复点击，即网络请求重复
 */
$.ajaxSetup({
	beforeSend : function(xhr) { // 发送请求前运行的函数。
		// 执行封装的ajax 请求按钮增加不可再次提交 锁
		var index = layer.load(0, {time: 10*1000}); //又换了种风格，并且设定最长等待10秒 

	},
	error : function(xMLHttpRequest, textStatus, errorThrown) { // error(xhr,status,error)
		// 如果请求失败要运行的函数。
		if (xMLHttpRequest.status != 0) {
			alert("网络异常，请检查网络然后重试或联系系统管理员");
		}
	},
	complete : function(XMLHttpRequest, textStatus) { // 请求完成时运行的函数（在请求成功或失败之后均调用，即在
		layer.closeAll('loading'); //关闭加载层
		// success 和 error
		// 函数之后）。
		// 执行封装的ajax 请求按钮 解 锁
		if (XMLHttpRequest.status != 200) {
			layer.alert("网络存在异常，请联系管理员");
		console.log("complete错误【0】XMLHttpRequest【1】textStatus");
		console.log(XMLHttpRequest);
		console.log(textStatus);
		}

	}
});
});
// IIFE(立即调用函数表达式); [参考 http://suqing.iteye.com/blog/1981591/]
;(function($) {
	// 扩展这个方法到jQuery.
	// $.extend() 是吧方法扩展到 $ 对象上，和 $.fn.extend 不同。 扩展到 $.fn.xxx 上后，
	// 调用的时候就可以是 $(selector).xxx()
	$.fn.extend({
		// 表单 name 反序列化
		deserialize : function(data) {
			Object.keys(data).map(function(currentValue, index, arr) {
				this.find("input[name=" + currentValue + "]").val(data[currentValue]);
			});
			// 遍历匹配元素的集合
			// 注意这里有个"return"，作用是把处理后的对象返回，实现链式操作
			// return this.each(function () {
			// // 在这里编写相应的代码进行处理
			// });
			return this;
		}
	});
	/**
	 * // 表单序列化为json数据
	 */
	$.fn.serializeObject = function() {
		var o = {};
		var a = this.serializeArray();
		$.each(a, function() {
			if (o[this.name] !== undefined) {
				if (!o[this.name].push) {
					o[this.name] = [ o[this.name] ];
				}
				o[this.name].push(this.value || '');
			} else {
				o[this.name] = this.value || '';
			}
		});
		return o;
	};
	// 传递jQuery到内层作用域去, 如果window,document用的多的话, 也可以在这里传进去.
	// })(jQuery, window, document, undefined);
})(jQuery, undefined);
// 调用方式 $(".selector").pluginName().otherMethod();
